import axios from "axios";
import { ElMessage } from "element-plus";
import router from "@/router";

// 创建axios实例
const service = axios.create({
  baseURL: "http://localhost:8080", // API的base_url
  timeout: 5000, // 请求超时时间
  withCredentials: true, // 跨域请求时发送cookie
});

// 请求拦截器
service.interceptors.request.use(
  (config) => {
    // 在这里可以做一些请求前的操作，比如设置token
    const token = localStorage.getItem("token");
    if (token) {
      config.headers["Authorization"] = token;
    }
    config.headers["Content-Type"] = "application/json;charset=utf-8";
    return config;
  },
  (error) => {
    // 请求错误处理
    console.error("Request Error:", error);
    return Promise.reject(error);
  }
);

// 响应拦截器
service.interceptors.response.use(
  (response) => {
    // 在这里可以做一些响应后的操作
    const res = response.data;
    if (res.code !== 200&&res.code!=null) {
      if(res.code===400||res.code===401){
        return res;
      }
      if (res.code === 401) {
        // 如果返回的状态码是401，表示用户未登录，可以跳转到登录页面
        ElMessage.error("未登录或登录已过期");
        // 清除本地存储中的token
        localStorage.removeItem("token");
        // 跳转到登录页面
        router.push("/login");
      } else if (res.code === 403) {
        // 403 没有权限
        ElMessage.error("没有权限，请联系管理员");
      } else {
        ElMessage.error(res.message);
      }
      // ElMessage.error(res.message || "Error");
      // 如果返回的状态不是200，可以进行一些错误处理
      return Promise.reject(new Error(res.message || "Error"));
    } else {
      return res;
    }
  },
  (error) => {
    // 响应错误处理
    console.error("Response Error:", error);
    ElMessage.error(error.message || "Response Error");
    return Promise.reject(error);
  }
);



export default service;
